home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / amok98-106 / amok103 / product-info.spec.lha / product-info.spec
Text File  |  1994-05-04  |  33KB  |  778 lines

  1. ---------------------------------------------------------------------------
  2.  
  3.              FishROM Database
  4.              ~~~~~~~~~~~~~~~~
  5.             (Draft #6: 940225)
  6.  
  7. ---------------------------------------------------------------------------
  8.  
  9. Synopsis of Changes in this Draft:
  10.  
  11.     1. If .Product-Info is not found, Product-Info is also considered a
  12.        valid product information file.  See (6) below.
  13.     2. A NEW FIELD (.fullname) is now available.  It is optional but
  14.        should be used by applications that derive their common name
  15.        from and abbreviation of their full (complete) name.  As an
  16.        example, AIBB would have a .fullname of "Amiga Intuition Based
  17.        Benchmarks"  See the field descriptions, below.
  18.     3. A NEW FIELD (.stored-in) is now available.  It describes where
  19.        and how the application is stored.  The generation of this field
  20.        requires some care because it may reference EITHER a directory
  21.        OR an (archive) file.  See the field descriptions, below.
  22.     4. A NEW FIELD (.submittal) is now available.  It describes who
  23.        submitted the program or how it came to be placed into the
  24.        collection.    See the field descriptions, below.
  25.     5. A NEW FIELD (.described-by) is now available.  It specifies who
  26.        created the Produc-Info file (all those fields) for the program.
  27.     6. New .type keywords have been added according to a list that Fred
  28.        posted.  This list is open-ended but extensions should be made
  29.        with care.  Unrestrained expansion could neutralize the use of
  30.        this field.
  31.     7. The description for the .version field has been altered to
  32.        indicate that the MAJOR.MINOR format is a suggestion, not a
  33.        rule.  What any program does with the information is anyhow
  34.        largely unspecified.  The specs laid down by this draft aim to
  35.        create law and order (... must be maintained at all times, Ja?)
  36.        but are NOT meant to impose needless and senseless restrictions.
  37.        NOTE: nothing hinders you from storing 20 lines of descriptive
  38.        text in the .version field or leave the .description field
  39.        entirely blank.  While KingFisher itself will give a hoot, the
  40.        user will be needlessly confused.  Stick as closely as POSSIBLE
  41.        to these guidelines to make the overall functionality more and
  42.        more reliable.
  43.  
  44. ---------------------------------------------------------------------------
  45.  
  46. NOTE: This document contains some specific information on the KingFisher
  47.       Database, as well as features and design choices of the KingFisher
  48.       2.0 Server.
  49.  
  50.       The KingFisher 2.0 Server is a program to which client applications
  51.       attach and from which clients may retrieve information.  This allows
  52.       multiple clients nearly unrestrained access to multiple databases.
  53.       Clients may have ARexx, CLI, and/or GUI interfaces, and may have a
  54.       very specific or quite general purpose.
  55.  
  56.  
  57. 1. A KingFisher 2.0 database is described by a text file whose name ends in
  58.    .kfdb (KingFisher DataBase.)  This file describes everything that the
  59.    KingFisher Server needs to know about the database, especially the names
  60.    of one or more database sections and what range of record numbers each
  61.    contains, the names of primary and secondary index files, as well as
  62.    some other, less vital, information.
  63.  
  64. 2. A database consists of zero or more records spread over one or more
  65.    files and indexed by a single (primary) index file.
  66.  
  67. 3. Each record is an extended ASCII (text) file which may contain standard
  68.    characters of the ISO Latin 1 character set (0x20..0xff) as is the
  69.    standard Amiga symbol set, as well as the ASCII formatting character
  70.    0x1a (newline.)  All other symbols in the range 0x00..0x1f are illegal
  71.    for a record and may or may not produce erratic behavior.
  72.  
  73.    Expressly forbidden are the NUL (0x00) and the ^N (0x0e) as they have
  74.    special meaning.
  75.  
  76.    Furthermore, a dot (.) is not permitted as the first character on a line
  77.    unless it preceeds the name of a FIELD (see below.)  A dot leading text
  78.    on a line (rather unusual) may be avoided without loss by placing a \
  79.    (backslash) symbol immediately before it.  KingFisher's formatting
  80.    functions will recognize and adjust for such occurrences, as well as
  81.    other special formatting sequences that begin with a backslash.
  82.  
  83.    And last, but not least, a record begins with the character string
  84.    ".name" (sans quotes) so that the start of the NEXT record can be easily
  85.    determined by the appearance of this special key string.  No other field
  86.    is special to KingFisher.
  87.  
  88.    Field name identifiers are not case sensitive.
  89.  
  90. 4. KingFisher places between some records a special marker (^N (0x0e)) line
  91.    to indicate breaks between disks.  This allows reindexing algorithms to
  92.    properly recover information about disk references.    While the new
  93.    .reference field makes this less necessary, it does help in carrying
  94.    over older KingFisher Release 1 databases.
  95.  
  96.    Suggestion:    You could "misuse" this disk number scheme with a database
  97.         of your own design by assigning it the concept of pages.
  98.         Thus you could store text and filenames in a database and
  99.         use the disk markers as new-page markers, all under the
  100.         control of the KingFisher server, of course.
  101.  
  102. 5. New records (fish) are added to the database at the end.  KingFisher
  103.    maintains a database with variable size records and removal of records
  104.    always truncates the database at that point.  Unlike the original
  105.    KingFisher Release 1, however, the records so truncated will be removed
  106.    from the database.  The interface to the server, however, would allow a
  107.    client application to make prior backup arrangements of the records that
  108.    it wants to delete, in order to undo the truncate operation again.
  109.  
  110. 6. Information in the form of KingFisher Database Records (see (3) above)
  111.    is to accompany an application in the form of a .Product-Info file.
  112.    Unless client applications decide to use a different filename (STRONGLY
  113.    discouraged!) the .Product-Info file is herewith a standard.
  114.  
  115.    As of draft #5, the leading period on the name .Product-Info is optional
  116.    and may be omitted.    Programs parsing the directory tree should check
  117.    for the presence of the .Product-Info file first, and if not found, try
  118.    to load the Product-Info (no leading period) file.
  119.  
  120. 7. When KingFisher Database Records are transported via electronic mail or
  121.    otherwise embedded within unrelated text (i.e. with news headers and
  122.    personal signatures following) the records MUST BE enclosed in special
  123.    DATA TRANSPORT MARKERS that tell the parsing software what information
  124.    is part of the records and what is not.  Multiple such records may be
  125.    enclosed by only a single pair of markers, or multiple records may be
  126.    enclosed each by a pair of markers with unrelated text before, after,
  127.    and between the markers.
  128.  
  129.    If a file is being parsed which begins with a line less than or equal to
  130.    30 characters in length, and does not have a special DATABASE HEADER,
  131.    then KingFisher assumes this file to be a KingFisher Release 1 database.
  132.    This assumption can be false, so it remains the user's responsibility to
  133.    assure that no garbage is fed to the parser.
  134.  
  135.    Note that the DATA TRANSPORT MARKERS are not meant for use in the
  136.    .Product-Info files, although they will be ignored if found.  They would
  137.    simply be wasted, there.
  138.  
  139.    The following examples are to be read as complete files between the
  140.    lines that look like this: ---------------
  141.  
  142.    Example 1:  A file containing text in addition to the database record.
  143.  
  144.     ----------------------------------------
  145.     Hello, Joe.  Here is the description of that weird game
  146.     I was telling you about.  See if you can figure out how
  147.     to win this.  Good luck!
  148.  
  149.     .BEGIN-FISH-DESCRIPTION
  150.     .name
  151.     MonkeyCommand
  152.     .author
  153.     KingKong Industries
  154.     .description
  155.     Lure the lovestruck monster ape back to his island.
  156.     Tools include Fay Wray's torn nightgown, a Fokker
  157.     airplane (you get to pilot it), a compass and a map.
  158.     .path
  159.     FishROM001:games/MonkeyCommand/
  160.     .END-FISH-DESCRIPTION
  161.     ----------------------------------------
  162.  
  163.    Example 2:  A file containing nothing but two database records.
  164.  
  165.     ----------------------------------------
  166.     .name
  167.     MonkeyCommand
  168.     .author
  169.     KingKong Industries
  170.     .description
  171.     Lure the lovestruck monster ape back to his island.
  172.     Tools include Fay Wray's torn nightgown, a Fokker
  173.     airplane (you get to pilot it), a compass and a map.
  174.     .path
  175.     FishROM001:games/MonkeyCommand/
  176.     .name
  177.     MonkeyCommand II
  178.     .author
  179.     KingKong Industries
  180.     .description
  181.     Keep the captured ape from assaulting the defenses
  182.     of the prison that was erected at the conclusion of
  183.     MonkeyCommand I.  The action consists of coordinating
  184.     the actions of four native tribal leaders and their
  185.     vassals in repairing the damage done by the rampant
  186.     beast.
  187.     .path
  188.     FishROM002:games/MonkeyCommand2/
  189.     ----------------------------------------
  190.  
  191.    Example 3:  A file containing two database records interspersed with
  192.            extraneous text.  The records are protected by DATA
  193.            TRANSPORT MARKERS
  194.  
  195.  
  196.     ----------------------------------------
  197.     Hi Tom,
  198.  
  199.     Remember that monkey game you told my about?
  200.  
  201.     .BEGIN-FISH-DESCRIPTION
  202.     .name
  203.     MonkeyCommand
  204.     .author
  205.     KingKong Industries
  206.     .description
  207.     Lure the lovestruck monster ape back to his island.
  208.     Tools include Fay Wray's torn nightgown, a Fokker
  209.     airplane (you get to pilot it), a compass and a map.
  210.     .path
  211.     FishROM001:games/MonkeyCommand/
  212.     .END-FISH-DESCRIPTION
  213.  
  214.     Well, seems that one wasn't enough and they released
  215.     another one.  We'll have to figure out how to finally
  216.     beat the first one, it seems, before they let us play
  217.     the next.  Maybe we can look through the binary to find
  218.     that code phrase.  Here's the text:
  219.  
  220.     .BEGIN-FISH-DESCRIPTION
  221.     .name
  222.     MonkeyCommand II
  223.     .author
  224.     KingKong Industries
  225.     .description
  226.     Keep the captured ape from breaking through the defenses
  227.     of the prison that was erected at the conclusion of
  228.     MonkeyCommand I.  The game consists of coordinating the
  229.     actions of four native tribal leaders and their vassals
  230.     in repairing the damage done by the angry beast.
  231.     .restriction
  232.     You need the secret code from the first MonkeyCommand
  233.     which you can only get if you won the game.
  234.     .path
  235.     FishROM002:games/MonkeyCommand2/
  236.     .END-FISH-DESCRIPTION
  237.  
  238.     (=:Joe:=)
  239.     ----------------------------------------
  240.  
  241. 9. The following describes a list of STANDARD fields for the KingFisher 2.0
  242.    database.  Please note that every field begins with a period to
  243.    distinguish it from the field contents.  KingFisher has some very
  244.    specific ideas about what these STANDARD fields may contain.  It is
  245.    important, therefore, that you follow these guidelines.
  246.  
  247.    In most fields, text on multiple physical lines is considered to be the
  248.    same as if it was all on one long line.  Newlines are simply treated as
  249.    a whitespace.  If you wish to insert special formatting symbols, please
  250.    refer to the section below, titled FORMATTING SYMBOLS, for more
  251.    information.
  252.  
  253.    While it is possible to omit any field, even those not marked OPTIONAL,
  254.    it is highly recommended to follow the established guidelines!  If
  255.    additional fields are needed because you wish to offer information that
  256.    does not fit within the framework of the existing fields, you are
  257.    perfectly welcome to create additional fields!  They will always be
  258.    treated like free format fields.
  259.  
  260. ================================================================
  261. .name
  262.     PURPOSE:    The proram's name
  263.     FORMAT:     1 line only
  264.     EXAMPLE:    KingFisher
  265.     EXAMPLE:    HomeBase VI
  266.     EXAMPLE:    AIBB
  267.     EXAMPLE:    gcc
  268.     ----------------------------------------------------------------
  269. .fullname
  270.     <<<OPTIONAL>>>
  271.     PURPOSE:    The program's full (or complete) name
  272.     FORMAT:     1 line only
  273.     EXAMPLE:    Amiga Intuition Based Benchmarks
  274.     EXAMPLE:    GNU C Compiler
  275.     NOTES:        If the .name is not an abbreviation then omit the
  276.             .fullname.  No sense in giving the name twice!
  277.     ----------------------------------------------------------------
  278. .type
  279.     PURPOSE:    A keyword that describes the nature of the program
  280.     FORMAT:     Preferrably a single word or two.
  281.     EXAMPLE:    Database
  282.     EXAMPLE:    Spreadsheet
  283.     EXAMPLE:    Animation Player
  284.     EXAMPLE:    Animation Tools
  285.     EXAMPLE:    Communications
  286.     EXAMPLE:    Display Commodity
  287.     EXAMPLE:    Mouse Commodity
  288.     NOTES:        Avoid abbreviations.  Refer to the list below for
  289.             suggestions.
  290.     ----------------------------------------------------------------
  291. .short                                    <@>
  292.     <<<OPTIONAL>>>
  293.     PURPOSE:    A one-line description, preferrably not exceeding
  294.             40 characters in length.  This description is to
  295.             give a single-glance insight into the program's
  296.             purpose.
  297.     FORMAT:     1 line only.
  298.     EXAMPLE:    Software catalog/search/maintenance tool, multi-user.
  299.     ----------------------------------------------------------------
  300. .description
  301.     PURPOSE:    A full-text description of your program, containing
  302.             anything that is NOT ALREADY available through the
  303.             other fields (see above and below.)  The reader
  304.             should gain a good understanding what your program
  305.             can and cannot do.  If you mention other programs
  306.             please do not forget to provide a .reference field
  307.             for each such mention.
  308.     FORMAT:     Any number of lines, treated as one line.
  309.             Formatting is permitted, but generally discouraged.
  310.     NOTES:        Do not indent your text if you choose to format
  311.             your text into multiple paragraphs.  Do not use \t
  312.             as a tab.  Leave paragraph formatting to KingFisher.
  313.     ----------------------------------------------------------------
  314. .version
  315.     PURPOSE:    The program's version number
  316.     FORMAT:     MAJOR.MINOR
  317.             1 line only
  318.     EXAMPLE:    37.100
  319.     NOTES:        Please note that the Commodore guidelines specify
  320.             that the number after the period is NOT a FRACTION
  321.             but rather a WHOLE NUMBER!  Thus, the following is
  322.             a valid progression:
  323.                 37.1  37.17  37.39  37.100  37.170
  324.             The following are all vastly different versions:
  325.                 37.1  37.10  37.100  37.1000
  326.     NOTES:        The format given for this field is really more of a
  327.             SUGGESTION rather than a RULE.    There is no reason
  328.             why you can't store "Today's Version" or "v940205"
  329.             instead of 18.173.  In an ideal world everyone
  330.             would use Commodore guidelines, but there are
  331.             enough exceptions.
  332.     ----------------------------------------------------------------
  333. .date
  334.     PURPOSE:    The program's official release date; not the date
  335.             it made it into the database.
  336.     FORMAT:     year.month.day
  337.             1 line only
  338.     EXAMPLE:    1993.09.27
  339.     NOTES:        The date format is chosen to be easily sortable.
  340.             Note the use of leading zeros in month and day.
  341.             The full year is to be given in anticipation of
  342.             the coming change to a new millenium.
  343.     ----------------------------------------------------------------
  344. .author
  345.     PURPOSE:    Any and all authors who have a part in the program
  346.     FORMAT:     Any number of lines, treated as one line (\n in the
  347.             text will "break up" the line into multiple visual
  348.             lines.)
  349.     EXAMPLE:    Joe R. User, Tea Rexx.
  350.     EXAMPLE:    J. Jones\n
  351.             Random Hacker\n
  352.             B. Clinton
  353.     NOTES:        Addresses should be placed in the .address field.
  354.             There should be only one .address field for each
  355.             .author field.
  356.             If more than 1 .author field is specified, then the
  357.             same number of .address and .email fields must also
  358.             be given in a 1-to-1 relationship (i.e. the 3rd
  359.             .author field must be associated with the 3rd
  360.             .address, and the 3rd .email field.)
  361.             EX: see the example "Joe R. User, Tea Rexx" above;
  362.             Assume that Joe R. User has long vanished and no
  363.             known address, but that Tea Rexx has supported the
  364.             program for a while.  If an .address and/or .email
  365.             field is available for Tea Rexx, then you must
  366.             specify EMPTY .address and/or .email fields for the
  367.             author listed BEFORE the ones for Tea Rexx.
  368.             Likewise, if the two authors names were reversed,
  369.             you would NOT have to specify blank .address and/or
  370.             .email fields for the second author.  I hope that
  371.             makes sense.
  372.     ----------------------------------------------------------------
  373. .restrictions
  374.     PURPOSE:    List restrictions placed upon this program.  These
  375.             should indicate in which way this program has been
  376.             made dysfunctional (for demo purposes), problems
  377.             (bugs) known to exist with this program, or any
  378.             other thing that lets the user know that this
  379.             program, as seen in this distribution, may not
  380.             fully satisfy the user in some form.
  381.     FORMAT:     Free form; see .description for more info.
  382.     EXAMPLE:    Demo version has SAVE and PRINT options disabled.
  383.     EXAMPLE:    The ReadOperatorsMind command fails to work with
  384.             CDTV units.  Incompatible with the Discus Ejector
  385.             utility.
  386.     EXAMPLE:    Crashes if iconified while loading a sample or
  387.             image larger than 64K.
  388.     EXAMPLE:    Requires a PAL display.
  389.     EXAMPLE:    The program is in German but the documentation
  390.             offers translations into English and Swahili on
  391.             a menu-by-menu and gadget-by-gadget basis.
  392.     NOTES:        Do NOT use this field for things like "won't work
  393.             with KS 1.3" or "won't run with less than 2 Megs
  394.             of RAM."
  395.     ----------------------------------------------------------------
  396. .requirements
  397.     PURPOSE:    List requirements for your program.  These should
  398.             give the reader enough information to determine if
  399.             the software will run on his/her system or not.
  400.             Be sure to specify operating system versions,
  401.             (hard)disk space requirements, etc.  If your
  402.             program requires any external libraries that are
  403.             not part of the system software, it would be nice
  404.             to list them here and comment on whether or not
  405.             they are included in the archive.
  406.             If your program is known to run on every existing
  407.             (Amiga) platform, state this in this field!
  408.     FORMAT:     Free form; see .description for more info.
  409.     EXAMPLE:    68020, 68030, or 68040 CPU; 3M free RAM; 18M disk
  410.             space; at least 640x480 display capabilities!
  411.     EXAMPLE:    Requires WB2.1 (V38)
  412.     EXAMPLE:    Requires 1024x768 (or larger) display capability.
  413.     EXAMPLE:    Works only with 4096-channel, 230db BLAZETHUNDER
  414.             Audio board.
  415.     EXAMPLE:    Requires MUI (MagicUserInterface) version 5.
  416.     ----------------------------------------------------------------
  417. .reference
  418.     <<<OPTIONAL>>>
  419.     PURPOSE:    Full path to where this program's files are stored,
  420.             as well as the version that is stored there.
  421.     FORMAT:     2 lines per reference:    the first line specifies
  422.             the full path (with trailing slash) and the second
  423.             line, the version.
  424.     NOTES:        Multiple such fields may be provided to reference
  425.             previous versions of this program, as well as
  426.             other programs that might be of interest.  The
  427.             versions should be listed in reverse chronological
  428.             order and should NOT include the current entry.
  429.             If this is an original entry and you make no
  430.             references to other programs anywhere, them omit
  431.             this field.
  432.             Please note that it is VERY VERY VERY important
  433.             that you specify the CORRECT PATH!  Without a
  434.             correct path, this entry will be nearly useless!
  435.     EXAMPLE:    FishROM-0002:Productivity/Databases/HomeBase VI/
  436.             417.0
  437.             FishROM-0001:Productivity/Databases/HomeBase VI/
  438.             415.12
  439. ----------------------------------------------------------------
  440. .distribution                        was: .status in rev 1
  441.     <<<OPTIONAL>>>
  442.     PURPOSE:    Describes the distribution and ownership status
  443.             of this software.  Please see below for a list of
  444.             common (and recommended!) terms to use.
  445.     FORMAT:     1 line
  446.     EXAMPLE:    Shareware
  447.     NOTES:        Please see the table below for descriptions of the
  448.             recommended terms.
  449.     ----------------------------------------------------------------
  450. .price
  451.     <<<OPTIONAL>>>
  452.     PURPOSE:    Describes the cost of this program to the user.
  453.     FORMAT:     Any number of lines, treated as one line.
  454.     EXAMPLE:    $50(US), DM75.
  455.     NOTES:        In order to make this field more useful, it is
  456.             strongly recommended that the first currency
  457.             listed is United States Dollars as shown in the
  458.             EXAMPLE above.    This allows a search to be limited
  459.             to a common price base.  If you charge no money
  460.             for this program, omit this field!
  461.     ----------------------------------------------------------------
  462. .address
  463.     <<<OPTIONAL>>>
  464.     PURPOSE:    Describe a full postal address of the author, to
  465.             be used if it becomes necessary or desirable to
  466.             contact the author.  Do not specify the author's
  467.             name, as this is already in the .author field.
  468.     FORMAT:     Multiple lines; formatting symbols \n are not
  469.             required, as physical line breaks are equivalent.
  470.     NOTES:        SEE THE .author FIELD FOR IMPORTANT INFORMATION
  471.     ----------------------------------------------------------------
  472. .email
  473.     <<<OPTIONAL>>>
  474.     PURPOSE:    Describe a full electronic mail address.  Make
  475.             sure that this address is complete and reachable
  476.             even from less well-connected sites.  The author
  477.             of KingFisher, for example, can be reached as
  478.             walrus@wam.umd.edu
  479.             It would be an error to specify only "walrus" or
  480.             "walrus@wam" even though these will work within
  481.             the particular organization where this address
  482.             is valid.
  483.     FORMAT:     Multiple lines; formatting symbols \n are not
  484.             required, as physical line breaks are equivalent.
  485.     NOTES:        You may specify multiple electronic mail addresses
  486.             in order of decreasing reliability and permanence,
  487.             each on its own line.
  488.             SEE THE .author FIELD FOR IMPORTANT INFORMATION
  489.     ----------------------------------------------------------------
  490. .exectype
  491.     <<<OPTIONAL>>>
  492.     PURPOSE:    Describe the type of executable(s) that make up
  493.             your program.  Examples:  68xxx, AMOS, Script,
  494.             ARexx, Compiled basic, Amigabasic, etc.
  495.     FORMAT:     Free form; see .description for more information.
  496.     EXAMPLE:    AMOS
  497.     EXAMPLE:    68000, 68020, and 68040.
  498.     ----------------------------------------------------------------
  499. .installsize
  500.     <<<OPTIONAL>>>
  501.     PURPOSE:    Indicate the minimum and maximum sizes of the
  502.             executable as it is installed.    The minimum size
  503.             should give an indication of how much diskspace
  504.             is required for a minimal installation (perhaps
  505.             lacking help files and miscellaneous tools) while
  506.             the maximum size should indicate the absolutely
  507.             highest amount of diskspace required by the
  508.             program.
  509.     FORMAT:     1 or more lines; Only the first line has a fixed
  510.             format, the rest are free-form.  See examples.
  511.             Always indicate the number scales with a capital
  512.             K (for kilobyte) or M (for megabyte)
  513.     EXAMPLE:    220K - 2M
  514.             Most of the database files can be kept on floppy
  515.             disks, so valuable harddisk space is not wasted.
  516.     EXAMPLE:    18K
  517.     EXAMPLE:    38K - 500K
  518.             Lots of documentation and example scripts make up
  519.             the bulk of the installation.
  520.     ----------------------------------------------------------------
  521. .source
  522.     <<<OPTIONAL>>>
  523.     PURPOSE:    Describe what source code is available with this
  524.             program.  If source code is not available then
  525.             omit this field.  The .construction field often
  526.             helps further identify the type of source if you
  527.             omit details here.  How large is the source?
  528.     FORMAT:     Free form; see .description for more information.
  529.     EXAMPLE:    SAS/C,Manx,DICE source (750K) available for $15
  530.     EXAMPLE:    Oberon source included.  85K
  531.     EXAMPLE:    Limited C source (15K) included.
  532.     EXAMPLE:    All source plus custom libraries, included: 12MB
  533.     ----------------------------------------------------------------
  534. .construction
  535.     <<<OPTIONAL>>>
  536.     PURPOSE:    Describe the type of language(s) used to create
  537.             this program and the methods used to build the
  538.             final executable.  If possible, include the
  539.             compiler version(s) and possibly important
  540.             options, such as optimization.
  541.     FORMAT:     Free form; see .description for more information.
  542.     EXAMPLE:    SAS/C++ 6.5 with full optimization.
  543.     EXAMPLE:    AdaEd.
  544.     EXAMPLE:    Fortran with self-made compiler.
  545.     EXAMPLE:    AMOS
  546.     ----------------------------------------------------------------
  547. .tested
  548.     <<<OPTIONAL>>>
  549.     PURPOSE:    Give an indication of which configurations have
  550.             served as test environments.
  551.     FORMAT:     Free form; see .description for more information.
  552.     EXAMPLE:    A500(512K Chip, 0K Fast, 1 Floppy), A2000(1M Chip,
  553.             2M Fast, 40M HD, 1 Floppy); not tested on 68020+
  554.             CPUs.
  555.     EXAMPLE:    A1000, A500, A600, A2000, A2000/30, A3000, A1200,
  556.             A4000/30, A4000/40 with various amounts of Chip
  557.             and Fast RAM, with and without MMU or FPU.  Found
  558.             to be free of Enforcer hits and able to work with
  559.             virtual memory products; compatible with Retina,
  560.             EGS/Spectrum, and Picasso software.  Also tested
  561.             under V33 through V40 system software.
  562.     ----------------------------------------------------------------
  563. .run
  564.     <<<OPTIONAL>>>
  565.     PURPOSE:    Specifies how to start the program.
  566.     FORMAT:     visible=type,command
  567.             Where 'type' is either WB or CLI to indicate the
  568.             required startup environment.
  569.     EXAMPLE:    HomeBase VI=WB,HomeBase VI
  570.             HomeBase VI=CLI,ExecuteMe.HB6
  571.             HomeBase VI Fixer=CLI,ExecuteMe.HB6Fixer
  572.     EXAMPLE:    FishTub=WB,ExecuteMe
  573.     NOTES:        KingFisher requires that this entry strictly
  574.             follows the above format.
  575.             The user is shown all text up to the first equal
  576.             sign (the 'visible' portion.)  The 'type' portion
  577.             must be terminated with a comma (,) and following
  578.             it will be the command to be executed.
  579.             Selecting it will either invoke the program from
  580.             the Workbench (invoking it as if double clicked on
  581.             its icon (if the .info file exists), or execute the
  582.             indicated shell command line as if it has been
  583.             typed at an open console window.
  584.     ----------------------------------------------------------------
  585. .docs
  586.     <<<OPTIONAL>>>
  587.     PURPOSE:    List all documentation files, possibly for viewing
  588.             from within KingFisher for more detailed info.
  589.     FORMAT:     1 line per file
  590.     EXAMPLE:    HomeBase.guide
  591.             HomeBase.dvi
  592.             HomeBase.doc
  593.     NOTES:        KingFisher examines the EXTENSION and invokes the
  594.             appropriate viewing tool: MultiView/AmigaGuide for
  595.             .guide files, ShowDVI for .dvi files, more for
  596.             anything else.    These files can also be sent to the
  597.             printer via KingFisher (i.e. print .ps or .doc
  598.             files.)  KingFisher will honor the PAGER
  599.             environment variable (defaults to 'more') to
  600.             display standard text.
  601.     NOTES:        Omit any path to these files, unless it is a
  602.             relative path from within the program's CD-ROM or
  603.             disk directory.  Do not specify these files if
  604.             they are located within archive files; remember:
  605.             the files must exist as they are given here!
  606.     ----------------------------------------------------------------
  607. .described-by
  608.     <<<OPTIONAL>>>
  609.     PURPOSE:    Specifies who created the description (Product-Info
  610.             file) for the program.
  611.     FORMAT:     Free form; should include an electronic mail
  612.             address, too, if available.
  613.     EXAMPLE:    Fred Fish (fnf@fishpond.cygnus.com)
  614.     EXAMPLE:    Udo Schuermann <walrus@wam.umd.edu>
  615.     ----------------------------------------------------------------
  616. .submittal
  617.     <<<OPTIONAL>>>
  618.     PURPOSE:    Identifies who submitted the program to Fred or
  619.             else how this program came to be on the reference
  620.             disk.
  621.     FORMAT:     Free form; usually one line.
  622.     EXAMPLE:    Submitted on disk directly by the author.
  623.     EXAMPLE:    Downloaded from wuarchive.wustl.edu in pub/aminet/util/misc
  624.     ----------------------------------------------------------------
  625. .stored-in
  626.     PURPOSE:    Specifies where and especially HOW the application
  627.             is stored.  This field should specify EITHER the
  628.             name of a directory (ending with a : or a /) OR the
  629.             name of a file (one that does NOT end with : or /)
  630.     FORMAT:     1 or more lines.
  631.     EXAMPLE:    FF1000:Disks701-1000/Disks941-960/Disk950/Enforcer/
  632.             FF1000:BBS/Disks501-1000/Disks941-960/Disk950/Enforcer.lha
  633.     NOTES:        It is up to the particular application to decide
  634.             how to handle this information.  If the extension
  635.             on the file is .lha, .lzh, .Z, .zoo, .pak, .zip,
  636.             etc. then you could, for example, call upon the
  637.             archiver of choice to unpack the application into a
  638.             temporary directory and let the user run the
  639.             program or list the files, or whatever.
  640.  
  641.             *** NOTE ***  This is not a user generated field.
  642.             If you create a Product-Info file for material
  643.             you have released, leave this field out.
  644.     ----------------------------------------------------------------
  645. .path
  646.     ***** RESERVED FOR INTERNAL USE *****
  647.     PURPOSE:    Specifies absolute path to THIS program, much like
  648.             a .references entry, but without version.  This
  649.             keeps things cleaner and allows electronically
  650.             distributed updates (in text form) to transfer
  651.             information otherwise found out and determined only
  652.             through the add-fish mechanism of the tree-walk on
  653.             the CD-ROM.  (If you understand what is meant by
  654.             this, I'll buy you a drink!)
  655.     FORMAT:     1 line path to the application on the CD-ROM.
  656.             This is the same path as where the .Product-Info
  657.             file was found (i.e. the file you as the submitter
  658.             are to generate using these guidelines.)
  659.     NOTES:        DO NOT SPECIFY THIS YOURSELF (i.e. in a Product-Info
  660.             file.)    KingFisher writes this entry during a
  661.             Database Export operation and reads it during a
  662.             Database Import operation.  KingFisher ignores this
  663.             field during a Database Build operation, so it is a
  664.             total waste except when used during export/import
  665.             operations!  AddFish makes no use of this field.
  666. ================================================================
  667.  
  668. FORMATTING SYMBOLS
  669.  
  670. KingFisher is font sensitive and able to adapt its display to proportional
  671. fonts as well as non-proportional ones.  If you introduce formatting
  672. symbols you may severely limit KingFisher's ability to effectively display
  673. information for your program.  We ask you, therefore, to exercise restraint
  674. and care.
  675.  
  676.     \\    A single \ (backslash) symbol.
  677.     \n    End of paragraph.  Text following this symbol is forced
  678.         to the beginning of the next visible line.  Fixes all \=
  679.         tab definitions into place.  The next \= will cause all
  680.         tabs to be cleared and a new one to be set.
  681.     \=    Sets a tab at the current horizontal position.    The next
  682.         \n will fix these tabs into place and prevent further
  683.         additions.
  684.     \t    Tabs to the next tab, regardless if this tab is to the
  685.         left or right of the cursor position!  Do not use tabs
  686.         for paragraph indentation!  Do not indent paragraphs.
  687.     \.    A single . (dot) especially useful if/when such a dot is
  688.         found (against normal practice) at the very beginning of
  689.         a line of text and would then be misunderstood to repre-
  690.         sent a field-name-specifier.
  691.  
  692. Do not introduce other formatting sequences as future versions of
  693. KingFisher may create new ones for special purposes.
  694.  
  695. ================================================================
  696.  
  697. EXAMPLES OF "TYPE" WORDS
  698.  
  699. Action Game        Animation        Animation Player
  700. Animation Tool        Archiver        CLI Tool
  701. Communications        Compiler        Compression
  702. Database        Disk Tool        Display Commodity
  703. Drawing         Image Conversion    Image Processing
  704. Library         Mouse Commodity     Music Composition
  705. OS Utility        Painting        Picture
  706. Printing        Sound Analysis        Sound Editing
  707. Sound Playing        Spreadsheet        Strategy Game
  708. Text            Text Editing        Text Viewer
  709. Thinking Game        Word Processing     Workbench Tool
  710.  
  711. ================================================================
  712.  
  713. LIST OF SOFTWARE STATUS KEYWORDS
  714.  
  715.     Commercial    Commercial software is owned and distributed
  716.             through licenses.  It costs money to individual
  717.             end-users and is not freely distributable.
  718.             SUCH PIECES SHOULD NOT APPEAR ON DISKS THAT ARE
  719.             MEANT FOR FREELY DISTRIBUTABLE SOFTWARE!
  720.  
  721.     Commercial Demo
  722.             Represents a demonstration of a commercial
  723.             package.  As such, commercial demos are freely
  724.             distributable and may have limitations as
  725.             described in the .limitations field.
  726.  
  727.     Giftware    Like shareware, usually.
  728.  
  729.     Shareware    Such software is owned and copyrights are
  730.             held by the author(s).  The software may be
  731.             distributed freely, but not sold for profit,
  732.             of course.  Shareware often specifies a limit
  733.             of some time after which you are requested or
  734.             required to register the software (i.e. pay
  735.             for it.)  This provides you with the means to
  736.             evaluate the software thoroughly before paying
  737.             for it.
  738.  
  739.     Freeware    Such software is owned and copyrights are
  740.             held by the author(s).  The software may be
  741.             distributed freely, but not sold for profit,
  742.             which would mean the software is no longer
  743.             FREEware.  No payments are required for such
  744.             software.
  745.  
  746.     Public Domain    Software labeled PD (Public Domain) belongs to
  747.             the public, i.e. ANYONE.  Some people release
  748.             their software into the public domain with the
  749.             mistaken idea that they can continue to own
  750.             and control the program.  Not so.  Software
  751.             that is labeled Public Domain (or said by the
  752.             author to be released into the public domain)
  753.             truly belongs to anyone and everyone.  It is
  754.             quite legal for someone to take such a program
  755.             and sell it for profit as is.  Likewise, it
  756.             it perfectly acceptable to modify public domain
  757.             software to build a better product (or whatever)
  758.             out of it and then sell it for profit.
  759.  
  760.     GNU Public License
  761.             The terms and conditions of this license
  762.             are long and not easily reproduced here.  Suffice
  763.             to say that software released under the GNU Public
  764.             License must be distributed with source code.
  765.             They are not public domain, however.
  766.  
  767.     GNU Library Public License
  768.             The terms and conditions of this license
  769.             are long and not easily reproduced here.  Suffice
  770.             to say that software released under the GNU Library
  771.             Public License must be distributed with source
  772.             code.  They are not public domain, however.
  773.  
  774.     Copyright but Freely Redistributable
  775.             The author holds all copyrights but allows the
  776.             material to be freely distributed under specified
  777.             conditions.
  778.